<?php
include_once '../gerenciadores/AutoloadGerenciadores.php';

class RepositorioTurma{
	private static $instancia;

	private function __construct(){
	}
	
	public static function getInstancia(){
		if(!isset(self::$instancia)){
			$class = __CLASS__;
			self::$instancia = new $class;
		}
		return self::$instancia;
	}
	
	
	public static function adicionaTurma(Turma $turma){
		$curso = $turma->getCurso();
		$dataInicio = $turma->getDataInicio();
		$dataFim = $turma->getDataFim();
		
			$sql = "INSERT INTO `tturma`(`idcurso`, `datainicio`, `turma`, `datafim`, `status`, `ano`) VALUES ('".
					$curso->getIdCurso()."', '".
					$dataInicio."', '".
					$turma->getTurma()."', '".
					$dataFim."', '".
					$turma->getStatus()."', '".
					$turma->getAno().
					"');";
			__autoload("Conexao");
			Conexao::executaSql($sql);
	}
	
	public static function getTurma($idTurma){
		$turma = new Turma();
		$sql = "SELECT * FROM tturma WHERE `idturma` LIKE '".$idTurma."';";
		$tabela = Conexao::tabelaSql($sql);
		
		foreach ($tabela as $linha){
		$turma->setIdTurma($idTurma);
		$turma->setTurma($linha["turma"]);
		$turma->setCurso(RepositorioCurso::getCurso($linha["idcurso"]));
		$turma->setDataInicio($linha["datainicio"]);
		$turma->setDataFim($linha["datafim"]);
		}
		return $turma;
	}
	
	public static function atualizaTurma(Turma $turma){
		$dataInicio = $turma->getDataInicio();
		$dataFim = $turma->getDataFim();
		
			if(isset($turma)){
				$sql = "UPDATE `tturma` SET ";
				if(!is_null($turma->getCurso())){
					$sql = $sql."`idcurso`='".$turma->getCurso()->getIdCurso()."',";
				}
				if(!is_null($dataInicio)){
					$sql = $sql."`datainicio`='".$dataInicio."',";
				}
				if(!is_null($turma->getTurma())){
					$sql = $sql."`turma`='".$turma->getTurma()."',";
				}
				if(!is_null($dataFim)){
					$sql = $sql."`datafim`='".$dataFim."',";
				}
				if(!is_null($dataFim)){
					$sql = $sql."`status`='".$turma->getStatus()."',";
				}
				if(!is_null($dataFim)){
					$sql = $sql."`ano`='".$turma->getAno()."',";
				}
				
				
				$sql = substr($sql, 0, -1);
				$sql = $sql." WHERE `idturma` = ".$turma->getIdTurma();
				
				__autoload("Conexao");
				Conexao::executaSql($sql);
			}	
	}
	
	public static function getTabelaTurma(Curso $curso){
		
		$sql = "SELECT * FROM `tturma` WHERE idcurso='".$curso->getIdCurso()."' AND datafim='0000-00-00'
				ORDER BY idturma ASC;";
		
		__autoload("Conexao");
		$tabela = Conexao::tabelaSql($sql);

		$i = 0;
		foreach ($tabela as $linha){
			$turma[$i] = new Turma();
			$turma[$i]->setIdTurma($linha['idturma']);
			$turma[$i]->setTurma($linha['turma']);
			$turma[$i]->setCurso(RepositorioCurso::getCurso($linha['idcurso']));
			$turma[$i]->setDataInicio($linha['datainicio']);
			$turma[$i]->setDataFim($linha['datafim']);
			$turma[$i]->setStatus($linha['status']);
			$turma[$i]->setAno($linha['ano']);
			$i++;
		}
		if(isset($turma)){
			return $turma;
		}else{
			return null;
		}
		
	}
	
	
	public static function getTodasTurmas(Curso $curso){
	
		$sql = "SELECT * FROM `tturma` WHERE idcurso='".$curso->getIdCurso()."'
				ORDER BY idturma ASC;";
	
		__autoload("Conexao");
		$tabela = Conexao::tabelaSql($sql);
	
		$i = 0;
		foreach ($tabela as $linha){
			$turma[$i] = new Turma();
			$turma[$i]->setIdTurma($linha['idturma']);
			$turma[$i]->setTurma($linha['turma']);
			$turma[$i]->setCurso(RepositorioCurso::getCurso($linha['idcurso']));
			$turma[$i]->setDataInicio($linha['datainicio']);
			$turma[$i]->setDataFim($linha['datafim']);
			$turma[$i]->setStatus($linha['status']);
			$turma[$i]->setAno($linha['ano']);
			$i++;
		}
		if(isset($turma)){
			return $turma;
		}else{
			return null;
		}
	
	}
	
	public static function deletaTurma(Turma $turma){
		
				if($turma->getIdTurma()!=0){
					$sql = "DELETE FROM `tturma` WHERE `idturma`='".$turma->getIdTurma()."';";
					__autoload("Conexao");
					Conexao::executaSql($sql);
				}
		
	}
	
	private static function selecionaCoordenador(int $idTurma){
		$sql = "SELECT *  FROM `tcadastro` cad
				 INNER JOIN `tpessoa ` pes ON (pes.idpessoa = cad.idpessoa)
				 WHERE cad.idturma = '".$idTurma."' AND pes.tipo_vinculo=4";
		$tabela = Conexao::tabelaSql($sql);
		$coordenador = new Pessoa();
		
		$coordenador->setCargo($tabela['cargo']);
		$coordenador->setInstituicao($tabela['instituicao']);
		$coordenador->setNome($tabela['nome']);
		$coordenador->setCpf($tabela['cpf']);
		$coordenador->setTipoVinculo($tabela['tipovinculo']);
		$coordenador->setConfirma($tabela['confirma']);
		$coordenador->setSenha($tabela['senha']);
		
	}
	
	private static function retornaAlunosDaTurma(int $idTurma){
		$sql = "SELECT pes.idpessoa FROM `tcadastro` cad
				 INNER JOIN `tpessoa` pes ON (pes.idpessoa = cad.idpessoa)
				 WHERE idturma = '".$idturma."'";
		$tabelaAlunos = Conexao::tabelaSql($sql);
		$tabela = array();
		
		for($i=0; $i<count($tabelaAlunos); $i++){
			$aluno = RepositorioAlunos::getAluno(array_column($tabelaAlunos[$i], 0));
			array_push($tabela, $aluno);
		}
		
		return $tabela;
	}
		
}
?>